package com.han.verifycode.data;

import com.han.verifycode.CodeConfig;
import com.han.verifycode.enums.VerifyCodeEnum;
import com.han.verifycode.utils.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 正确答案
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RightKey {
    /**
     * 默认的构造函数
     *
     * @param code
     */
    public RightKey(String code) {
        this.code = code;
        this.createDate = LocalDateTime.now();
    }

    /**
     * 添加config装配
     *
     * @param code
     * @param conf
     */
    public RightKey(String code, CodeConfig conf) {
        this.code = code;
        this.createDate = LocalDateTime.now();
        this.config = conf;
    }

    private VerifyCodeEnum type;
    /**
     * 匹配码
     */
    private String code;

    /**
     * 创建时间
     */
    private LocalDateTime createDate;

    /**
     * 提示
     */
    private String tips;
    /**
     * 图片位置
     */
    private FullPath fullPath;

    /**
     * 精确答案
     */
    private String answer;

    /**
     * 图片答案↓
     */

    /**
     * 验证码宽度
     */
    private Integer width;

    /**
     * 验证码长度
     */
    private Integer height;

    /**
     * 位置
     */
    private List<Area> positions;

    /**
     * 生成时的配置
     */
    private CodeConfig config;

    /**
     * 其他描述
     */
    private String desc;

    /**
     * 根据正确答案 生成提示
     *
     * @return
     */
    public CodeResponse generateCodeResponse() {
        //uri 在这里可能需要转换
        return new CodeResponse(code, getFullPath().getUri(), tips);
    }


    @Override
    public String toString() {
        return StrUtil.prettyJson(this);
    }

}
